package com.diankangwo.dao;

import cn.beecloud.bean.TransferData;

import java.util.List;
import java.util.Map;

/**
 * 订单退款操作
 * 
 * @author xiaoyu
 *
 */
public interface OrderRefundDAO {

	/**
	 * 批量打款(暂时只支持ALI)
	 * 
	 * @param batchNo
	 *            批量付款批号， 此次批量付款的唯一标示，11-32位数字字母组合
	 * @param list
	 *            付款的详细数据{TransferData}的List集合
	 * @param accountName
	 *            付款方的支付宝账户名，支付宝名称
	 * @return 正确调用返回跳转url,跳转至支付url页面,即可开始支付；错误则返回null
	 */
	public String batchPayment(String batchNo, List<TransferData> list, String accountName);

	/**
	 * 退款
	 * 
	 * @param billNo
	 *            商户订单号， 32个字符内，数字和/或字母组合，确保在商户系统中唯一，(必填)
	 * @param refundNo
	 *            商户退款单号 ， 格式为:退款日期(8位) + 流水号(3~24位)。不可重复，且退款日期必须是当天日期。
	 *            流水号可以接受数字或英文字符，建议使用数字，但不可接受“000”，例如：201506101035040000001 (必填)
	 * @param refundFee
	 *            退款金额，只能为整数，单位为分，例如1，(必填)
	 * @param optional
	 *            附加数据,用户自定义的参数，将会在webhook通知中原样返回，该字段主要用于商户携带订单的自定义数据，例如{"key1":
	 *            "value1","key2":"value2",...},(选填)
	 * @return 阿里退款，跳转至退款url并输入支付密码完成退款；其他渠道退款，返回"退款成功"；失败返回null
	 */
	public String BCRefundParamter(String billNo, String refundNo, Integer refundFee, Map<String, Object> optional);

}
